Your account is in a strong position. Over the last six months it more than doubled monthly leads while bringing cost-per-lead down, your tracking is clean (CallRail calls + form captures), ad quality is excellent, and you lead your local auction. The one thing to watch: in the most recent 30 days your main campaign's cost-per-lead drifted above its $70 target as clicks got more expensive. That's a tuning question, not a broken account.
Monthly leads grew from ~69 to ~186, and cost-per-lead fell from ~$80 to a low of ~$42 in May.
Its $70 Target CPA is currently delivering at $81 as clicks rose +18% ($14.65 → $17.26) over the last 30 days.
Your brand campaign converts at ~$10/lead but its small budget is fully spent — it misses ~18% of available brand searches.
Nothing is broken. The gains here are about steadying cost on the main campaign and funding what's already cheap.
Each grade is drawn from our standard review checklist (lead volume & rate, cost efficiency vs. target, ad quality, tracking integrity, structure, budget use, and competitive position). It's a snapshot of how the account is set up to perform — not just last month's numbers.
Grades reflect account health and setup. "Cost Efficiency" and "Budget Allocation" sit at B because the main campaign is running above its CPA target this month and the brand budget is capped — both addressed in Considerations below.
Managing your account is continuous — most of the work is ongoing monitoring, analysis and strategy, not just the changes that show up in a log. Here's both: how we manage the account day to day, and the specific changes we made this period.
Monitor spend, leads and cost-per-lead; watch for anomalies, disapprovals or sudden cost shifts; review new calls and form leads in CallRail.
Review the search-terms report and add negatives; check keyword and ad performance; adjust bids and budgets; correlate Google Ads with CallRail and your other Google properties.
Full performance review, competitive and geographic analysis, ad-copy refreshes, and a strategy session to plan the next period against your goals.
| Date | What we changed | Why |
|---|---|---|
| May 29 | Adjusted main campaign settings | Ongoing optimization toward your lead goal |
| Jun 1 | Added targeting to the main campaign | Expand qualified reach |
| Jun 4 | Added 8 exact-match keywords (main campaign) | Lock in proven, high-intent searches for better control |
| Jun 11 | Refreshed ad copy across 4 ads (brand & non-brand) — new offer-led messaging ("View Prices, Deals & Offers") | Lift relevance, click-through and Ad Rank |
Logged account changes, last 30 days. Behind these sit the daily/weekly monitoring and the monthly strategy work described above.
An apples-to-apples comparison so every number shows direction, not just a total.
The longer view is a clear growth story — more leads each month at a falling cost-per-lead, reaching a low of ~$42 in May. June (still in progress) and the latest 30-day window show cost ticking back up, which is the signal behind this month's considerations.
Bars = leads · line = cost per lead
Bars = spend · line = avg. cost per click
June 2026 is a partial month (1st–16th); its totals are lower simply because the month isn't finished. Read the shape of the line, not June's raw total.
We have the lead numbers; the revenue picture needs one input from you (average job value + close rate). Here's the shape it takes — figures fill in once you confirm those.
| Step | This period | Source |
|---|---|---|
| Leads generated | 161 | Confirmed from the account |
| Qualified leads | 159 | Confirmed via CallRail |
| Booked jobs | [ qualified × your close rate ] | Your close rate |
| Revenue generated | [ jobs × avg job value ] | Your average job value |
| Return on ad spend | [ revenue ÷ $8,982 ] | Calculated |
A look at where your leads came from and what they signal about intent. Your phone leads are tracked through CallRail (our standard across all accounts), and form leads through on-site capture.
| Conversion action | Source | Leads (30d) | Intent read |
|---|---|---|---|
| First-Time Phone Call | CallRail | 61 | High — new caller |
| Call From Ad Extensions | Google call asset | 52 | High — clicked to call |
| Form Capture | Website form | 48 | Medium-high |
| Total primary leads | 161 |
CallRail records every call and form across all your marketing. Below we've isolated the leads driven by Google Ads (paid search) so they line up with this report. The headline: these aren't just leads — they're mostly qualified, answered, and substantial.
| Answered | 129 98.5% |
| Missed (voicemail / abandoned) | 2 |
| Qualified leads | 110 of 128 scored 86% |
| First-time callers | 110 84% |
| Average call length | ~4m 48s |
| Substantive calls (2 min+) | 107 82% |
| Submissions | 52 |
| Qualified leads | 49 of 50 scored 98% |
| New (first-time) | 40 77% |
| Returning | 12 |
Source context: CallRail tracked 166 calls and 104 forms across all your marketing this period; Google Ads (paid) drove 131 calls and 52 forms. The remainder came from organic search, direct, and your newsletter — this report covers the paid portion.
A note on "Qualified": these flags come from CallRail's lead scoring, which is reviewed by hand — so the count is only as current and accurate as the most recent review.
A neutral, low-to-high review of the searches that triggered your ads over the last 30 days. Spend is relative — a higher-cost term isn't automatically good or bad; it's context for where attention and budget are going. Your main campaign uses Google's newer "AI Max" broad matching, with our standard negative-keyword guardrails applied and reviewed regularly.
| Theme | Leads |
|---|---|
| Dryer vent cleaning | ~48 |
| Brand ("[your brand]") | ~40 |
| Dryer vent cleaning + city / near me | ~22 |
| Dryer vent repair | ~7 |
| Dryer vent installation | ~5 |
The same demand, grouped — the quickest way to see where spend and leads concentrate. (Grouped from keyword-level data; figures approximate.)
| Category | Spend | Leads | Cost / Lead | Read |
|---|---|---|---|---|
| Dryer vent cleaning (core, near-me, city) | ~$5,600 | ~79 | ~$71 | Your engine — most volume |
| Brand ("[your brand]") | ~$596 | ~58 | ~$10 | Cheapest, highest intent |
| Installation / replacement | ~$1,035 | ~10 | ~$103 | Higher cost, fewer leads |
| Repair | ~$705 | ~7 | ~$100 | Higher cost; some out-of-scope |
| Duct cleaning | ~$348 | ~5 | ~$70 | Adjacent, performing |
| Research / cost / inspection | ~$600 | ~1 | high | Browsing intent — monitor |
Sorted by spend (high to low). Showing impressions, clicks, cost and leads. Read levels, not labels.
| Search term | Impr. | Clicks | Cost | Leads |
|---|---|---|---|---|
| dryer vent cleaning | 1,135 | 121 | $2217.96 | 27.3 |
| dryer vent cleaning [metro] | 269 | 41 | $777.42 | 11 |
| dryer vent cleaning near me | 152 | 18 | $404.40 | 8 |
| [your brand] | 300 | 83 | $367.82 | 35 |
| dryer vent | 125 | 8 | $134.83 | 1 |
| dryer vent installation | 22 | 2 | $111.15 | 1 |
| dryer vent installation near me | 11 | 4 | $104.41 | 1 |
| dryer vent repair near me | 13 | 3 | $91.74 | 1 |
| dryer vent loose in wall | 2 | 3 | $88.14 | 1 |
| dryer vent cleaners | 15 | 5 | $76.73 | 0.7 |
| dryer vent cleaner near me | 9 | 3 | $75.76 | 0 |
| dry vent cleaner | 2 | 1 | $74.14 | 1 |
| dryer vent cleaning cost | 53 | 8 | $71.49 | 0 |
| dryer vent cleanout | 17 | 4 | $68.77 | 0.5 |
| dryer vent cleaner nearby | 5 | 1 | $64.37 | 1 |
| bird in dryer vent removal near me | 1 | 1 | $64.26 | 1 |
| dryer vent cleaning service | 77 | 5 | $64.20 | 0 |
| best dryer vent cleaning near me | 16 | 1 | $64.05 | 1 |
| vent [brand] | 36 | 15 | $61.69 | 7 |
| dryer vent bird removal | 5 | 2 | $55.97 | 0.3 |
| dryer vent cleaners near me | 23 | 3 | $55.26 | 0 |
| dryer [brand] | 29 | 12 | $54.62 | 5 |
| dryer vents | 16 | 1 | $52.36 | 1 |
| my dryer is not drying | 7 | 1 | $44.79 | 1 |
| vent dryer [brand] | 2 | 2 | $44.24 | 0 |
| dryer vent cleaning [metro] | 9 | 3 | $43.97 | 1 |
| dryer vent cleaning and repair | 6 | 3 | $41.18 | 0 |
| the dryer [brand] | 5 | 4 | $38.46 | 0 |
| bird nest in dryer vent | 3 | 2 | $36.24 | 0 |
| [your brand] [metro] | 19 | 6 | $34.68 | 3 |
| dryer vent specialists near me | 3 | 2 | $33.28 | 1 |
| dryer vent cleaning [metro] | 3 | 1 | $30.72 | 1 |
| dryer duct cleaning | 14 | 2 | $29.57 | 1 |
| dryer vent cleaning [metro] | 2 | 1 | $28.94 | 0 |
| laundry vent cleaning | 6 | 1 | $28.05 | 0 |
| dryer vent clean out | 13 | 1 | $27.51 | 0 |
| install a dryer vent | 5 | 1 | $26.43 | 1 |
| dryer vent cleaning services | 14 | 2 | $26.17 | 0.5 |
| dryer vent installers | 6 | 1 | $23.83 | 1 |
| dryer vent cleaner | 46 | 4 | $22.81 | 1 |
| [your brand] [metro] | 16 | 3 | $22.58 | 1 |
| [metro] dryer vent cleaning | 21 | 1 | $22.47 | 0 |
| dryer vents cleaning | 3 | 1 | $22.47 | 1 |
| duct cleaning dryer vent cleaning | 2 | 1 | $22.36 | 0 |
| the dryer vent guy | 2 | 1 | $22.13 | 0 |
| who to call to clean dryer vent | 2 | 1 | $21.78 | 0 |
| dryer vent replacement near me | 6 | 1 | $20.57 | 0 |
| laundry vent cleaner | 1 | 1 | $20.20 | 1 |
| best company to clean dryer vent | 3 | 1 | $20.16 | 1 |
| dryer vent and duct cleaning near me | 2 | 1 | $20.03 | 0 |
698 unique search terms ran this period; the 50 above represent the large majority of spend.
Part of our routine optimization. With AI Max broad matching, we continuously review the search-term report and add negatives so budget stays on ready-to-book searches. These are the current candidate groups — neutral, low-spend items included for completeness. None of this is wasted-account management; it's standard ongoing housekeeping.
| Group | Example terms seen this period | Approx. spend | Why it's a candidate |
|---|---|---|---|
| Price / cost research | "dryer vent cleaning cost," "…prices," "average cost…," "cost of dryer vent cleaning," "dryer duct cleaning cost," "…specials/deals" | ~$130 | Research-stage, lower booking intent |
| Appliance repair (out of scope) | "my dryer is not drying," "dryer won't dry," "dryer fixer," "people who fix dryers" | ~$80 | Appliance repair, not vent service |
| Wildlife / bird removal | "bird nest in dryer vent," "dryer vent bird removal," "bird in dryer vent removal near me" | ~$90 | Different service line |
| Off-target phrasing | "laundry vent cleaning," "laundry vent cleaner," "lint cleaner" | ~$57 | Weak/ambiguous intent |
| Too broad | "vent" (single word), "dryer vent" (bare) | ~$150 | Very broad; mixed intent |
| Zero-lead this period (monitor) | "who cleans dryer vents," "dryer vent clean out," "dryer vent cleaning companies," "clean dryer vents," "dryer vent service near me" | ~$110 | No leads yet — watch before excluding (allow for lag) |
| Keyword | Leads | Cost/Lead | QS |
|---|---|---|---|
| [your brand] (brand) | 48 | $10 | 10 |
| dryer vent cleaning | 47 | $68 | 7 |
| dryer vent cleaning [metro] | 12.5 | $79 | 8 |
| dryer vent cleaning near me | 10.5 | $73 | 6 |
| dryer vent repair | 6.3 | $84 | 7 |
| dryer vent cleaning company | 4.3 | $54 | 7 |
| Keyword | Spend | Leads | QS |
|---|---|---|---|
| dryer vent replacement | $454 | 5 | 8 |
| Dryer Duct Cleaning Company | $339 | 5 | — |
| who cleans out dryer vents | $279 | 0 | 6 |
| dryer vent installation | $253 | 1 | 7 |
| dryer vent cleaning cost | $151 | 0.3 | 5 |
| dryer vent inspection near me | $99 | 0.3 | — |
| Campaign | Bidding | Spend | Leads | Cost/Lead | CTR | Impr. Share |
|---|---|---|---|---|---|---|
| Main Search Campaign — AI MAX | Max Conversions, Target CPA $70 | $8,386 | 103 | $81.42 | 8.8% | 60% |
| Brand Search Campaign | Max Conversions (no target) | $596 | 58 | $10.27 | 31.3% | 78% |
| Secondary Market Search Campaign | Max Conversions | $0 | 0 | — | — | — |
| Total | $8,982 | 161 | $55.79 | 10.5% | — |
"Impression share" is the slice of available searches where your ad showed. When you miss some, it's for one of two very different reasons — and the response differs for each.
| Campaign | Impr. share | Missed to BUDGET | Missed to RANK | What that means |
|---|---|---|---|---|
| Main (AI MAX) | 60% | 0% | 40% | Not a budget issue — an Ad Rank one. Higher relevance/quality wins these back, not more spend. |
| Brand | 78% | 18% | 4% | A budget issue — cheap brand searches missed because the daily budget runs out. |
| Campaign | ~Monthly budget | Spend | Utilization | Read |
|---|---|---|---|---|
| Main (AI MAX) — $370/day | ~$11,100 | $8,386 | ~76% | Room to spend, but rank-limited |
| Brand — $20/day | ~$600 | $596 | ~99% | Fully spent / capped |
Lead-per-dollar is not linear — costs rise as you push for more volume. These are directional, headroom-aware scenarios, not promises.
| Move | Where | Realistic effect |
|---|---|---|
| +$10–15/day budget | Brand campaign | Captures much of the ~18% missed brand share at ~$10/lead → roughly +8–15 leads/mo, cheaply |
| Hold budget, tune target & rank | Main campaign | Bring CPL back toward $70 and recover lost impressions — more leads at the same spend |
| Add budget to main now | Main campaign | Limited effect — it's rank-limited, not budget-limited (do this after rank improves) |
Where your budget is landing across the metro service area, last 30 days. (Performance is reported at the city level; finer ZIP-level performance isn't exposed by Google's reporting — we manage ZIP targeting in the campaign settings.)
| City | Leads | Cost/Lead |
|---|---|---|
| City A | 7 | $26 |
| City B | 5 | $27 |
| Sharonville | 5 | $33 |
| Day Heights | 5 | $33 |
| Independence | 3 | $37 |
| Morrow / Carlisle | 5 | $40 |
| City C | 11 | $48 |
| City D | 8 | $50 |
| Metro core | 39 | $54 |
| City | Spend | Leads |
|---|---|---|
| Hamilton | $819 | 9 ($91) |
| Groesbeck | $148 | 1 ($148) |
| Madeira | $136 | 1 ($136) |
| Beckett Ridge | $131 | 1 ($131) |
| Newtown / Ross | $190 | 2 (~$95) |
| City E | $126 | 0 |
| City F | $94 | 0 |
| City G | $85 | 0 |
| City H | $73 | 0 |
From the Auction Insights report for your Search campaigns (last 30 days). "Outranks you" is how often a competitor appeared above you when you both showed.
| Competitor | Impr. share | Overlap | Outranks you | Threat |
|---|---|---|---|---|
| You — the business | 61.7% | — | — | Auction leader |
| competitor-a.com | 20.7% | 28% | 52% | High |
| competitor-b.com | 15.5% | 21% | 58% | Medium-High |
| competitor-c.com | 12.1% | 16% | 22% | Medium |
| amazon.com | 13.6% | 9% | 34% | Marketplace |
| competitor-d.com | <10% | 7% | 25% | Low |
How the auction has moved over six months. You dipped early in the year, then recovered to a clear lead; competitor-a.com has climbed steadily.
| Impression share | Dec | Jan | Feb | Mar | Apr | May | Jun* |
|---|---|---|---|---|---|---|---|
| You — the business | 51% | 48% | 47% | 44% | 51% | 58% | 62% |
| competitor-a.com | <10% | <10% | <10% | 13% | 15% | 19% | 20% |
*June is a partial month. Your share recovered strongly from the March low; Competitor A has roughly doubled its presence since winter — the trend to watch.
Now backed by your GA4 data. Your ads point to a purpose-built dedicated site (your-dedicated-site.com) — and it's a full multi-page site with service-specific pages, not just one page. Here's how visitors engaged this period.
| Landing page | Sessions | Visitors | Avg. engagement / session |
|---|---|---|---|
| / main page | 1,948 | 1,794 | 43s |
| /dryer-vent-cleaning | 29 | 28 | 1m 21s |
| /about-contact | 24 | 17 | 3m 10s |
| /thankyou.php form completed | 19 | 10 | 2m 40s |
| /dryer-fire-prevention | 10 | 10 | 1m 22s |
| /dryer-vent-repair | 9 | 9 | 11m 02s |
| /dryer-vent-installation | 6 | 5 | 1m 47s |
| /multi-unit-dryer-vent-services | 5 | 5 | 2m 06s |
This page serves all your marketing, not just Google Ads — so here's the full picture of new visitors this period (GA4).
| Source | New visitors | Share | Note |
|---|---|---|---|
| Social — Facebook & Instagram | 1,002 | 55% | Your largest traffic source |
| Google Ads — Paid Search | 502 | 28% | The focus of this report |
| Direct | 283 | 16% | Typed in / saved / offline |
| Other — Google cross-network, organic, LinkedIn, email | ~35 | ~2% | Small contributors |
So roughly 28% of new visitors came from Google Ads and the majority from your Facebook/Instagram activity — which is why we use CallRail to isolate the paid-search leads in this report. One technical note: your social ad traffic appears under "social" rather than "paid social" in GA4, so if you want Facebook/LinkedIn ads attributed as paid, those links may need UTM tags. GA4 isn't set up to count leads here (leads are tracked in CallRail + Google Ads), and low repeat-visit rates are normal for a one-time service.
Demand runs 7am–5pm, peaking around 10am. Lead cost is lowest in the early morning and evening — ~$41 at 8–9am, ~$39 at 2pm, ~$29–31 at 8–9pm — and highest midday/early-evening (~$79 at noon, ~$110 at 6pm). Most efficient windows: 8–10am and 2–4pm.
| Device | Spend | Leads | Cost/Lead |
|---|---|---|---|
| Mobile | $7,142 | 124 | $57.60 |
| Desktop | $1,642 | 35 | $46.90 |
| Tablet | $198 | 2 | $98.87 |
Mobile carries 80% of spend (expected for a "call now" service). Desktop quietly delivers the cheapest leads. Tablet is tiny and pricey.
Framed as considerations, not fixes — the account is performing. These are the moves we believe will compound results, roughly in order of impact.
It's delivering $81 against a $70 target as clicks rose. We'll review whether $70 is realistic for the current auction, and work the levers that bring cost down without losing volume — tighter ad-group themes, relevance, and recovering rank-lost impressions.
It converts at ~$10/lead and is fully spent, missing ~18% of cheap brand searches. A modest budget increase (~$10–15/day) likely captures 8–15 more leads/month at low cost.
Add clear out-of-scope terms (appliance repair, wildlife, single-word) now; monitor research/zero-lead terms for a cycle. Standard ongoing housekeeping, kept neutral and lag-aware.
Splitting cleaning / install / repair into clearer themes lifts relevance (and rank), and a second responsive ad per group gives us something to test against today's single ad.
Test headline/offer variations, make click-to-call unmissable on mobile, and trial service-specific messaging (cleaning vs. install) to lift conversion rate further.
Lean budget toward efficient cities (City A, City C, City D, the metro core), ease back on zero-lead towns, and emphasise high-efficiency hours where bidding allows.
Connect CallRail job values and close rates to the reporting so we can review lead quality and true cost-per-booked-job, not just lead volume.
Bring its $70 target and Ad Rank back in line so cost-per-lead settles.
Capture the cheap ~$10 leads it's currently missing.
Routine negative-keyword review keeps budget on ready-to-book demand.
Beyond this month's actions, here's what we're actively watching and weighing for the account — so you can see the thinking that's always running in the background.
Monitoring how the new broad-match engine finds customers, and keeping negatives tight around it.
Service-specific variations and mobile speed on your dedicated page to lift conversion rate.
Capturing more of the cheap, high-intent brand demand currently capped by budget.
Watching efficient suburbs for room to grow, and easing back where leads aren't coming.
Tracking competitor-a.com's rising share and defending your position on overlapping searches.
Preparing CallRail correlation so we optimise toward booked jobs, not just lead volume.